import {QueryPage} from '@/api/common/type.ts'

// 分页查询软件核价单列表请求
export interface softwarePlanListParam extends QueryPage {
    projectId: number | undefined;
    repositoryId: number | undefined;
    activate: number | undefined;
}

// 软件核价表单类型
export interface softwarePlan {
    id?: number | undefined,
    projectId: number | undefined;
    repositoryId: number | undefined;
    projectAmount: number;
    warehouseQuantity: number;
    wmsAmount: number;
    wcsAmount: number;
    interfaceAmount: number;
    baseImplementationFee: number;
    materialId: number | undefined;
    materialPrice: number;
    materialBasePrice: number
    materialCoefficient: number;
    totalImplementationPrice: number;
    implementationCoefficient: number;
    totalPrice: number;
    extraCost: number;
    extraCostDescription: string | undefined;
    remark: string | undefined;
    implementationItem: ImplementationItem[];
    materialItems: MaterialItem[];
    activate?: number | undefined;    // 激活状态：0-失效，1-生效
    createTime?: string | undefined;  // 创建时间
    updateTime?: string | undefined;  // 更新时间
    createId?: number | undefined;    // 创建人ID
    createName?: string | undefined;  // 创建人姓名
    updateId?: number | undefined;    // 更新人ID
    updateName?: string | undefined;  // 更新人姓名
}

// 实施项类型
export interface ImplementationItem {
    id?: number | undefined,   // id
    name: string | undefined;   // 实施项名称
    quantity: number;    // 数量
    unitPrice: number; // 单价
    totalPrice: number;  // 总价
    isBaseImplementation: boolean | undefined;  // 是否基础实施费
}


// 物料项类型
export interface MaterialItem {
    materialId: number | undefined;   // 物料ID，修改为number类型
    materialName: string | undefined;  // 物料名称
    brand: string | undefined;  // 品牌
    quantity: number;    // 数量
    purchasePrice: number; // 采购单价
    totalPrice: number;  // 总价
}

// 导出字段信息
export interface ExportFieldInfo {
    fieldName: string,  // 字段名称
    displayName: string  // 显示名称
}

// 自定义导出请求
export interface ExportRequest {
    fields: string[],  // 需要导出的字段列表
    searchParam?: softwarePlanListParam  // 查询条件，可选
}

// 批量复制请求
export interface SoftwarePricingPlanBatchCopyParam {
    sourceIds: number[],  // 源ID列表
    targetProjectId: number  // 目标项目ID
}
